// 封装倒计时逻辑函数
import {ref,computed,onUnmounted} from 'vue'
import dayjs from 'dayjs'
export const useCountDown=()=>{
  // 1.响应式数据,并根据下载好的插件dayjs进行时间格式化---xx分xx秒
  let timer=null  // 用于存储 setInterval 返回的定时器 ID
  const time=ref(0)
  // 每减一次就格式化一次
  const formatTime=computed(()=>dayjs.unix(time.value).format('mm分ss秒'))
  // 2.开启倒计时的函数
  const start=(currentTime)=>{
     // 清除可能存在的旧定时器，避免多个定时器同时运行
    if (timer) {
      clearInterval(timer)
      timer=null
    }
    // 开启倒计时的逻辑
    // 核心逻辑：每隔一秒钟就减一
    time.value=currentTime
    
    timer=setInterval(()=>{
      time.value--
      // 倒计时为<=0时也关闭定时器
      if (time.value <= 0) {
        clearInterval(timer)
        timer = null
      }
    },1000)
  }
  // 组件销毁时清除定时器
  onUnmounted(()=>{
    if (timer) {
      clearInterval(timer)
      timer = null
    }
  })
  return {
    formatTime,
    start
  }
}